home *** CD-ROM | disk | FTP | other *** search
/ 3D Images / 3D Images.iso / programs / amiga / photocdadpro / photocd next >
Text File  |  1995-01-12  |  8KB  |  320 lines

  1. /*
  2. ** PhotoCD
  3. **
  4. ** $VER: ADPro PhotoCD Loader 2.0.5 (14.6.94)
  5. ** Loader for Photo-CD-Pictures in ADPro together with AsimPhoto.
  6. ** Copyright © 1994 Erik Simonson
  7. ** All Rights Reserved
  8. */
  9.  
  10. OPTIONS RESULTS
  11.  
  12. SIGNAL ON BREAK_C
  13. SIGNAL ON BREAK_D
  14. SIGNAL ON HALT
  15. SIGNAL ON SYNTAX
  16.  
  17. ADPro            = '"ADPro PhotoCD-loader"'
  18. NL               = '0a'x
  19. NeedPrefsversion = 1.1
  20. PrefsFile        = "ENV:ADPro/PhotoCD.prefs"
  21.  
  22. IF ~SHOW('L',"rexxsupport.library") THEN
  23.   IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
  24.     CALL Quit("Couldn't open 'rexxsupport.library', you must\ninstall it before using this program.")
  25.  
  26.  
  27. Complete = 0
  28. DO WHILE Complete ~= 2
  29.   IF OPEN(Prefs,PrefsFile,"R") THEN DO
  30.     Complete = 1
  31.     OpenPrefs = 1
  32.     DO i=1 TO 3
  33.       READLN(Prefs)
  34.     END
  35.     Prefsversion=WORD(READLN(Prefs),3)
  36.     IF Prefsversion < NeedPrefsversion THEN
  37.       CLOSE(Prefs)
  38.     ELSE DO
  39.       Asim=READLN(Prefs)
  40.       CALL Signs(RIGHT(Asim,LENGTH(Asim)-16),'"')
  41.       AsimCDFSPath = String
  42.       CALL CheckPath("File",AsimCDFSPath)
  43.       IF Correct = 0 THEN
  44.         AsimCDFSPath = "ASIMCDFSPATH"
  45.  
  46.       Language=WORD(READLN(Prefs),3)
  47.  
  48.       Work=READLN(Prefs)
  49.       CALL Signs(RIGHT(Work,LENGTH(Work)-16),'"')
  50.       WorkDir = String
  51.       CALL CheckPath("Dir",WorkDir)
  52.       IF Correct = 0 THEN
  53.         WorkDir = "WORKDIR"
  54.  
  55.       CLOSE(Prefs)
  56.     END
  57.   END
  58.   ELSE
  59.     PrefsFile = "ENV:ADPro/PhotoCD.prefs"
  60.   Complete = Complete + 1
  61. END
  62.  
  63. ADDRESS "ADPro"
  64. DISPLAYMESSAGE ADPro
  65.  
  66.  
  67. /* Asking which language to use */
  68. Resultat = 1
  69. IF Language = "LANGUAGE" THEN DO
  70.   DO WHILE Resultat ~= 0
  71.     LISTVIEW '"Language ?"' 2 NOSELECT SORT ITEMS "English Svenska"
  72.     Resultat = RC
  73.     IF Resultat = 0 THEN Language = WORD(ADPRO_RESULT,1)
  74.     ELSE DO
  75.       OKAYN '"Language selection"' '"No language selected, you must select\none before using this program."' "Select|Cancel"
  76.       IF RC = 0 THEN CALL Quit
  77.     END
  78.   END
  79. END
  80.  
  81.  
  82. /* Strings, translate them if you want to, but notice
  83. ** that you have to doublequote strings with spaces.
  84. */
  85.  
  86. IF Language = '"English"' THEN DO
  87.  
  88.     ProgReq   = '"Select conversion program..."'
  89.     ProgMess  = '"No conversion program selected, you must\nselect one before using this program."'
  90.     ProgChoi  = "Select|Cancel"
  91.  
  92.     WorkReq   = '"Work in directory..."'
  93.     WorkMess  = '"No workdirectory selected, you must\nselect one before using this program."'
  94.  
  95.     PrefMess  = '"In which way do you want to save the preferences?"'
  96.     Cancel    = "Cancel"
  97.     Save      = "Save"
  98.     Use       = "Use"
  99.     PrefsMess = '"The preferences could only be saved temporarily\nin Ram:, and because of that will not be found\nthe next time after a cold reboot."'
  100.  
  101.     FileReq   = '"Select PhotoCD Image File to Load"'
  102.     FileMess  = '"No picture selected, do you want to quit?"'
  103.     FileChoi  = "Select|Yes"
  104.  
  105.     ResMess   = '"In which resolution do you want\nto have the converted picture?"'
  106.  
  107.     ConvMess  = '"Converting picture..."'
  108.  
  109. END
  110.  
  111.  
  112. /* Swedish strings */
  113.  
  114.   ELSE IF Language = '"Svenska"' THEN DO
  115.     ProgReq   = '"Välj konverteringsprogram..."'
  116.     ProgMess  = '"Inget konverteringsprogram valt, du måste\nvälja ett för att använda detta program."'
  117.     ProgChoi  = "Välj|Avbryt"
  118.  
  119.     WorkReq   = '"Arbeta i katalog..."'
  120.     WorkMess  = '"Ingen arbetskatalog vald, du måste välja\nett för att använda detta program."'
  121.  
  122.     PrefMess  = '"Hur vill du spara inställningarna?"'
  123.     Cancel    = "Avbryt"
  124.     Save      = "Spara"
  125.     Use       = "Använd"
  126.     PrefsMess = '"Inställningarna kunde bara sparas temporärt\ni Ram:, och kommer på grund av det att vara\nborta nästa gång datorn slås på."'
  127.  
  128.     FileReq   = '"Öppna Photo-CD-bild..."'
  129.     FileMess  = '"Ingen bild vald, vill du avsluta?"'
  130.     FileChoi  = "Välj|Ja"
  131.  
  132.     ResMess   = '"Vilken upplösning vill du ha\npå den konverterade bilden?"'
  133.  
  134.     ConvMess  = '"Konverterar bilden..."'
  135.  
  136.   END
  137.  
  138. /* End strings */
  139.  
  140.  
  141.  
  142. /* Asking for conversionprogram */
  143. IF AsimCDFSPath = "ASIMCDFSPATH" THEN DO
  144.   CALL FilePath("File",ProgReq,"AsimCDFS:","AsimPhoto",ProgMess,ProgChoi)
  145.   AsimCDFSPath = '"'String'"'
  146.   SavePrefs = 1
  147. END
  148.  
  149.  
  150. /* Asking for workdirectory */
  151. IF WorkDir = "WORKDIR" THEN DO
  152.   CALL FilePath("Dir",WorkReq,"Ram:T",,WorkMess,ProgChoi)
  153.   WorkDir = '"'String'"'
  154.   SavePrefs = 1
  155. END
  156. IF RIGHT(WorkDir,2) = ':"' THEN
  157.   WorkFile = INSERT(LEFT(WorkDir,(LENGTH(WorkDir)-1)),"ADPPHCDLOAD")'"'
  158. ELSE
  159.   WorkFile = INSERT(LEFT(WorkDir,(LENGTH(WorkDir)-1)),"/ADPPHCDLOAD")'"'
  160.  
  161.  
  162. /* Save prefs */
  163. IF SavePrefs = 1 THEN DO
  164.   OKAYN ADPro PrefMess Save'|'Use'|'Cancel
  165.   SELECT
  166.     WHEN RC = 1 THEN Save = 2
  167.     WHEN RC = 2 THEN Save = 1
  168.     WHEN RC = 0 THEN Save = 0
  169.   END
  170.   IF Save ~= 0 THEN DO
  171.     Resultat = 0
  172.     DO WHILE Resultat < Save
  173.       IF OPEN(Prefs,PrefsFile,"W") THEN DO
  174.         WriteLn(Prefs,"These are the current preferences for ADPro PhotoCD Loader.")
  175.         WriteLn(Prefs,"1994 © Erik Simonson")
  176.         WriteLn(Prefs,"")
  177.         WriteLn(Prefs,"Prefsversion  = "||NeedPrefsversion)
  178.         WriteLn(Prefs,"AsimCDFS-Path = "||AsimCDFSPath)
  179.         WriteLn(Prefs,"Language      = "||Language)
  180.         WriteLn(Prefs,"Work-Dir      = "||WorkDir)
  181.         CLOSE(Prefs)
  182.       END
  183.       ELSE
  184.         OKAY1 PrefsMess
  185.       Resultat = Resultat + 1
  186.       PrefsFile = "ENVARC:ADPro/PhotoCD.prefs"
  187.     END
  188.     IF Resultat = 1 & Save = 2 THEN
  189.       OKAY1 PrefsMess
  190.   END
  191. END
  192.  
  193.  
  194. /* Asking for picture */
  195. CALL FilePath("File",FileReq,"CD0:PHOTO_CD/IMAGES",,FileMess,FileChoi)
  196. AsimCDFS = AsimCDFSPath "From" String
  197.  
  198.  
  199.  
  200. /* Asking in which resolution the should be in */
  201. OKAYN ADPro ResMess INSERT("768x512|384x256|192x128|",Cancel)
  202.  
  203. SELECT
  204.   WHEN RC = 1 THEN DestFil = ' To '||WorkFile||' Resolution base'
  205.   WHEN RC = 2 THEN DestFil = ' To '||WorkFile||' Resolution base4'
  206.   WHEN RC = 3 THEN DestFil = ' To '||WorkFile||' Resolution base16'
  207.   WHEN RC = 0 THEN CALL Quit
  208. END
  209.  
  210. DISPLAYMESSAGE ConvMess
  211.  
  212.  
  213. /* Converting image */
  214. ADDRESS COMMAND
  215. INSERT(AsimCDFS,Destfil)
  216.  
  217. ADDRESS "ADPro"
  218. DISPLAYMESSAGE ADPro
  219.  
  220. /* Open picture */
  221. ADDRESS "ADPro"
  222. LOADER "IFF" WorkFile
  223. CALL Quit
  224.  
  225. CheckPath:
  226.   PARSE ARG Type,Path
  227.   Correct = 0
  228.   Leng = LENGTH(Path)
  229.  
  230.   IF Type = "File" THEN
  231.     IF OPEN(Test,RIGHT(LEFT(Path,Leng-1),Leng-2),"R") THEN DO
  232.       CLOSE(Test)
  233.       Correct = 1
  234.     END
  235.   ELSE IF Type = "Dir" & RIGHT(Path,1) = ':' THEN
  236.     IF SHOWLIST('V',UPPER(LEFT(Path,Leng-1))) THEN Correct = 1
  237.  
  238.   IF Correct = 0 THEN DO
  239.     Number = 1
  240.     String = ""
  241.     Resultat = 1
  242.     DO WHILE Resultat ~= 0
  243.       Sign = LEFT(RIGHT(Path,Number),1)
  244.       IF Sign ~= '/' & Sign ~= ':' THEN DO
  245.         Number = Number + 1
  246.         String = INSERT(Sign,String)
  247.       END
  248.       ELSE DO
  249.         SignEnd = RIGHT(String,1)
  250.         IF SignEnd = '"' THEN
  251.           String = LEFT(String,(LENGTH(String)-1))
  252.         Resultat = 0
  253.         Correct = 0
  254.         IF Sign = "/" THEN
  255.           Word  = LEFT(Path,(Leng-Number))
  256.         ELSE DO
  257.           LeftWord  = LEFT(Path,(Leng-Number+1))
  258.           LengLeftWord = LENGTH(LeftWord)
  259.           Word = RIGHT(LeftWord,LengLeftWord-1)
  260.         END
  261.         List = SHOWDIR(Word, 'd')
  262.         WordNumber = WORDS(List)
  263.         Number = 1
  264.         DO WHILE Correct = 0 & Number < WordNumber + 1
  265.           IF WORD(List,Number) ~= String THEN
  266.           Number = Number + 1
  267.           ELSE
  268.             Correct = 1
  269.         END
  270.       END
  271.     END
  272.   END
  273. RETURN Correct
  274.  
  275.  
  276. FilePath:
  277.   PARSE ARG Type,Title,DefaultDir,DefaultFile,Mess,Choices
  278.   ADDRESS "ADPro"
  279.   Resultat = 1
  280.   DO WHILE Resultat ~= 0
  281.     IF Type = "File" THEN DO
  282.       GETFILE Title DefaultDir DefaultFile
  283.       Resultat = RC
  284.       IF Resultat ~= 0  THEN DO
  285.           OKAYN ADPro Mess Choices
  286.           IF RC = 0 THEN CALL Quit
  287.       END
  288.       String = ADPRO_RESULT
  289.     END
  290.     ELSE
  291.     IF Type = "Dir" THEN DO
  292.       GETDIR Title DefaultDir
  293.       Resultat = RC
  294.       IF Resultat ~= 0 THEN DO
  295.         OKAYN ADPro Mess Choices
  296.         IF RC = 0 THEN CALL Quit
  297.       END
  298.       String = ADPRO_RESULT
  299.     END
  300.   END
  301. RETURN String
  302.  
  303. Signs:
  304.   PARSE ARG String,Sign
  305.   StringLength = LENGTH(String)
  306.   IF LEFT(String,1) ~= Sign THEN
  307.     String = INSERT(Sign,String)
  308.   IF RIGHT(String,1) ~= Sign THEN
  309.     String = INSERT(String,Sign)
  310. RETURN String
  311.  
  312. Quit:
  313. PARSE ARG String
  314. ADDRESS "ADPro"
  315. IF String ~= "" THEN OKAY1 String
  316. DISPLAYMESSAGE
  317. ADDRESS COMMAND
  318. "DELETE "||INSERT(LEFT(WorkFile,(LENGTH(WorkFile)-1)),'#?"')
  319. EXIT 0
  320.